ESP32をAWSに接続してみた(2) モノの登録
こんにちは、CX事業本部 IoT事業部のアッキーです。前回に引き続き、ESP32から取得したデータをIoT Coreに送信するシステムを構築していきます。
前回の記事
モノの登録
今回は、IoT Coreへモノの登録を行います。IoT Coreでは、接続したいデバイスをモノ(Thing)として登録する必要があります。
AWSマネジメントコンソールからIoT Coreを開き、左メニューの管理→モノを選択します。モノの一覧が表示されます(今回は私が実験で作成したモノも表示されています)ので、「モノを作成」をクリックします。
モノを作成の画面に遷移しますので、デフォルトの「1つのモノを作成」のまま次へ
モノのプロパティを指定します。今回は「ESP32AirSensor01」としました。この名前が、ESP32ソースコードのSecret.hで指定するTHINGNAMEになります。
Device Shadowなどは設定する必要はありません。デフォルトのまま次へ
デバイスの証明書を設定します。AWS側で生成したものを使用しますので、「新しい証明書を自動生成」を選択して次へ
ESP32がMQTTへの接続とパブリッシュを行えるよう、ポリシーを設定します。ポシリーを作成をクリックしてください。
ポシリー名にはESP32AirSensorPolicy01と入力し、ポリシードキュメントに2つのポリシーステートメントを追加します。
共にポリシー効果を許可とし、MQTT接続するための「iot:Connect」とパブリッシュするための「iot:Publish」を追加します。ポリシーリソースにはともに「*」を入力してください。作成をクリックします。
証明書にポリシーをアタッチの画面に戻り、今作成したESP32AirSensorPolicy01にチェックを入れて、モノの作成をクリックします。
証明書と公開鍵が発行されます。デバイス証明書、パブリックキーファイル、プライベートキーファイル、AmazonルートCA1をダウンロードしてください。この画面を閉じるとダウンロードできなくなります。
モノの一覧の画面に戻ると、デバイスの作成が完了したことが表示されます。
デバイスデータエンドポイントの確認
左メニュー下の「設定」をクリックし、デバイスデータエンドポイントを確認します。このアドレスがESP32ソースコードのSecret.hで指定するAWS_IOT_ENDPOINTとなります。
PCで動作確認
ここまでの手順でMQTTへ接続できるようになっているはずです。まずはPCで動作確認を行いました。
今回はMQTT Xというクライアントを使用しました。
New ConnectionをクリックするとEdit画面が表示されますので、NameとClientIDにESP32AirSensor01、Hostにデバイスデータエンドポイント、Portに8883、SSL/TLSをオンにし、CertificateをSelf signedを選択します。CertificatesのCA Fileにはそれぞれ先ほどダウンロードしたルートCA、Client Certificate Fileにはクライアント証明書、Client key fileにはクライアント秘密鍵のファイルを指定します。Connectをクリックすると設定完了です。
IoT Coreのクライアントコンソールの左側メニュー→テスト→MQTTテストクライアントをクリックします。
トピックのフィルターにtest/topic01を入力してサブスクライブをクリックします。
MQTTXに戻り、topicにtest/topic01を入力して送信ボタンをクリックすると、AWS側のMQTTテストクライアントにも同じメッセージが表示されることが確認できます。
デバイスへ秘密鍵の登録とビルド
先ほどダウンロードしたデバイス証明書、秘密鍵、ルートCAをSecret.hに設定します。
ファイルをテキストエディタで開き、デバイス証明書をAWS_CERT_CRT、秘密鍵をAWS_CERT_PRIVATE、ルートCAをAWS_CERT_CAに書き込みます。
この状態になればソースコードをビルドし、ESP32に書き込むことができます。
動作確認
ここまでできれば、デバイスからMQTTでデータが送信できています!トピックのフィルターをnode/airsensorに変更し、しばらく待つと、デバイスから送信される温度、湿度、ほこりセンサの値が表示されます。
おわりに
今回はデバイスをIoT Coreに登録し、MQTTでデータが送信できることを確認できました。次回はこの値をOpenSearchで確認できるようにしていきます。
次回